int inpin=0;
int segmentpins[]={9,8,7,6,5,4,3,2};
int selectpins[]={10,11,12,13};
int tempbit[4];
byte numbers[]
{
B111111100,//0
B01100000,
B11011010,
B11110010,
B01100110,
B10110110,
B00111110,
B11100000,
B11111110,
B1110010,//9
B00000001,//DP

}; 
void setup()
{
for (int i=0;i<8;i++0)
	{
	pinmode(segmentpins[i],output);
	}
for(int j=0;j<4;j++)
	{
	pinmode(selectpins[j],output;
	}

}
void loop
{
int val=analogRead(inpin);
float temp=(val/1024.0)*5000/10;
int temp100=temp*100;//此时没有小数部分
for(int m=3,m>=0,m--)
	{
	tempbit[m]=temp100%10;//6518,第3位为8,第2位为1,第1位为5,第0位6
	temp100=temp100/10;/651//65//6

	}//该for循环就是将所有数取出来
for(int i=0;i<50;i++)
	{
	digitalWrite(selectpins[0],high);//10//1号数码管选通
	numbershow(tembit[0]);//6//显示6
	delay(5);
	digitalwrite(selectpins[0],low);将第一位数码管关掉
	bitwrite(numbers[tempbit[1]],0,1);//5//将变量的零位写为1即关闭小数点

	digitalwrite(selectpins[1],high)//11//选择第二位
	numbershow(tembit[1]);//显示5
	delay(5);
	digitalwrite(selectpins[1],low);//释放
	bitwrite(numbers[tembit[1]],0,0);//启动数码管的小数点

	digitalwrite(selectpins[2],high);//12//选择第三位
	numbershow(tembit[2]);//1
	delay(5);
	digitalwrite(selectpins[2],low);//释放
	

	digitalwrite(selectpins[3],high);//13//选择第四位
	numbershow(tembit[3]);//8
	delay(5);
	digitalwrite(selectpins[3],low);释放

	}
}
void numbershow(int number)
{
boolean bitval;
for(int n;n<8;n++)
	{
	bitval=bitread(number[number],n);//照应0-9//从最右开始读
	bitvalue=!bitvalue;//共阳极取反
	digitalwrite(segmentpins[n],bitvalue);//相应引脚置位显示
	}
}
